module.export = {
  // 项目名称 不可以包含中文字符
  name: 'npm-study',
  // 项目版本号
  version: '1.0.0',
  // 项目描述信息
  description: 'npm学习',
  /**
   * 包的入口文件
   *
   * 当通过 require('npm-xxx') 导入包时，它按照这个包文件中配置的main字段找对应的入口文件
   *
   * 这样，当通过 require('npm-xxx') 导入这个时找的就是 'npm-xxx/index.js'
   *
   * 此项目如果仅仅是项目代码，无需开源或者发布成包 那么main字段没什么用
   */
  main: 'index.js',
  /**
   * 是否是私有的
   * 如果为 true，在使用 npm publish 发布包时是发布不了的
   * 防止私有项目或模块发布出去的方式
   *
   * 如果是在开发项目时，这个属性一般是打开的
   */
  privite: true, // true or false
  // 项目关键字
  keywords: ['npm', 'study'],
  // 作者（发布时用到）
  author: 'xuke',
  // 项目主页地址（有可填，比如当前项目官方文档网站或项目文档说明）
  homepage: 'http://xxx.com',
  // 开源协议（发布时用到）
  license: 'ISC',
  /**
   * 脚本命令配置
   */
  scripts: {
    test: 'echo "Error: no test specified" && exit 1',
  },
  // 当前项目依赖项
  dependencies: {
    axios: '^0.26.1',
  },
  // 开发环境依赖，只有开发时才用到，生成环境用不到，比打包工具
  dependencies: {
    //
  },
  /**
   * 对等依赖，当前包依赖一个包，它必须是以另一个宿主包为前提的
   * 比如：element-plus是依赖vue3的，ant-design 是依赖于react、react-dom
   *
   * 比如下面，要求使用此包（npm-study）的用户，安装当前包时，需要保证已经安装过了vue
   * 且vue的版本需要符合下面的配置中的版本，否则会存在提示，让你去安装
   */
  peerDependencies: {
    vue: '>=3.2.0',
  },
  /**
   * engines 用来指定使用当前包需要的环境，如：Node与npm的版本号
   */
  engines: {
    node: '>=16',
    npm: '>=8.1.0',
  },

  /**
   * 因为 package.json虽然是npm的配置文件，但同时它也是一个json文件
   * 既然是json文件，那么里面的键值对数据我们完全可以添加自定义的数据，
   * 比如下方的 browserslist 属性
   *
   * 它就是定义打包后的javascript浏览器的兼容情况，此字段供处理浏览器兼容性的插件进行使用读取
   *
   * 按照对应的插件要求，提供对应的值
   *
   * 有些专门用于给第三方插件读取的配置项，都可以在package.json文件中定义，
   * 但同时也可以不定义进package.json里，将不同的插件要读取的配置创建成不同的配置文件
   * 比如：browserslist 的配置，我们可以创建一个 .browserslistrc 文件，进行配置的编写
   * 不同的插件配置项，可定义在不同的配置文件下，配置文件的名称约束取决于插件支持什么
   */
  browserslist: ['> 1%', 'last 2 versions', 'not dead', 'not ie 11'],
};
